// 指定当前类所属的包路径，用于组织项目结构
package com.example.springboot.service.impl;
// 导入所需的类和工具包
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;// MyBatis-Plus 查询条件构造器
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;// MyBatis-Plus 分页工具类
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;// MyBatis-Plus 服务层实现类基类
import com.example.springboot.entity.DormManager;// 宿管实体类
import com.example.springboot.mapper.DormManagerMapper;// 宿管数据访问层接口
import com.example.springboot.service.DormManagerService; // 宿管服务层接口
import org.springframework.stereotype.Service;// Spring 服务层注解
// 导入资源注入注解（用于依赖注入
import javax.annotation.Resource;

// @Service：声明当前类是 Spring 管理的服务层组件，自动注册到 Spring 容器中
@Service
// 继承 ServiceImpl 实现服务层接口，泛型参数为 Mapper 接口和实体类
public class DormManagerServiceImpl extends ServiceImpl<DormManagerMapper, DormManager> implements DormManagerService {

    /**
     * 注入 DAO 层对象（通过 J2EE 标准的 @Resource 注解实现依赖注入）
     *默认为按名称注入，这里注入 DormManagerMapper 接口的实现类
     */
    @Resource
    private DormManagerMapper dormManagerMapper;

    /**
     * 宿管登录方法
     * @param username 登录用户名
     * @param password 登录密码
     * @return 登录成功返回宿管实体对象，失败返回 null
     */
    @Override// 标识重写父类方法
    public DormManager dormManagerLogin(String username, String password) {
        // 创建查询条件构造器
        QueryWrapper<DormManager> qw = new QueryWrapper<>();
        // 添加用户名相等的查询条件（eq：等于）
        qw.eq("username", username);
        // 添加密码相等的查询条件
        qw.eq("password", password);
        // 执行单条记录查询（根据用户名和密码查询宿管信息）
        DormManager dormManager = dormManagerMapper.selectOne(qw);
        // 判断查询结果是否存在
        if (dormManager != null) {
            // 存在则返回宿管对象
            return dormManager;
        } else {
            // 不存在则返回 null
            return null;
        }
    }

    /**
     * 新增宿管方法
     * @param dormManager 待新增的宿管实体对象
     * @return 影响的行数（成功返回 1，失败返回 0）
     */
    @Override
    public int addNewDormManager(DormManager dormManager) {
        // 执行插入操作（调用 MyBatis-Plus 的基础插入方法）
        int insert = dormManagerMapper.insert(dormManager);
        // 返回插入结果
        return insert;
    }

    /**
     * 宿管信息分页查询方法
     * @param pageNum 当前页码
     * @param pageSize 每页显示记录数
     * @param search 搜索关键词（按姓名模糊查询）
     * @return 分页结果对象（包含总记录数和当前页数据）
     */
    @Override
    public Page find(Integer pageNum, Integer pageSize, String search) {
        // 创建分页对象（传入当前页码和每页大小）
        Page page = new Page<>(pageNum, pageSize);
        // 创建查询条件构造器
        QueryWrapper<DormManager> qw = new QueryWrapper<>();
        // 添加姓名模糊查询条件（like：模糊匹配）
        qw.like("name", search);
        // 执行分页查询（调用 MyBatis-Plus 的分页查询方法）
        Page dormManagerPage = dormManagerMapper.selectPage(page, qw);
        // 返回分页结果
        return dormManagerPage;
    }


    /**
     * 更新宿管信息方法（根据 ID 更新）
     * @param dormManager 包含更新后数据的宿管实体对象（需包含 ID）
     * @return 影响的行数（成功返回 1，失败返回 0）
     */
    @Override
    public int updateNewDormManager(DormManager dormManager) {
        // 执行更新操作（调用 MyBatis-Plus 的根据 ID 更新方法）
        int i = dormManagerMapper.updateById(dormManager);
        // 返回更新结果
        return i;
    }

    /**
     * 删除宿管方法（根据用户名删除，假设用户名为主键）
     * @param username 待删除宿管的用户名（主键）
     * @return 影响的行数（成功返回 1，失败返回 0）
     */
    @Override
    public int deleteDormManager(String username) {
        // 执行删除操作（调用 MyBatis-Plus 的根据 ID 删除方法，这里用户名作为主键）
        int i = dormManagerMapper.deleteById(username);
        return i;
    }


}
